Arch-vile fire spawned at the wrong location

Due to a bug in the Doom engine, the fire from the arch-vile's attack can be spawned at the wrong location. When the fog is initially spawned, the following code is used, which contains a blatant programming error:

//   // A_VileTarget // Spawn the hellfire //   void A_VileTarget (mobj_t*	actor) {       mobj_t*	fog; if (!actor->target) return; A_FaceTarget (actor); fog = P_SpawnMobj (actor->target->x,   		          actor->target->x,    		          actor->target->z, MT_FIRE); actor->tracer = fog; fog->target = actor; fog->tracer = actor->target; A_Fire (fog); }

On the line in bold, the actor's target's x coordinate is used again where the code should instead use the target's y coordinate. This causes the initial position of the fire to be shifted on the x-y plane relative to the target of the arch-vile's attack. Should the target become hidden from the arch-vile's line of sight before the fire's position is updated, the fire will remain in this incorrect position until it dissipates completely.

Links

 * YouTube video